package CapaLogica;

import java.util.*;
import CapaAccesoBD.Conector;

public class MultiMecenas{
   /**
    * Inserta un registro del mecena en la base de datos
    *
    * @param  pid  id del mecena
    * @param  pnombreCompleto nombre del mecena
    * @param  ppais pais del mecena
    * @param  pciudad ciudad del mecena
    * @param  pfec_naci fecha de nacimiento del mecena
    * @return   el objeto Mecena
    */
	public  Mecenas crear(int pid,String pnombreCompleto,String ppais,String pciudad,String pfec_naci) 
		throws Exception{
            
		Mecenas pmecena=null;
		String sql;
		sql = "INSERT INTO TMecena "+
		"VALUES ("+pid+", '"+pnombreCompleto+"', '"+ppais+"', '"+pciudad+"', '"+pfec_naci+"');";
		try {
                    
			Conector.getConector().ejecutarSQL(sql);
			pmecena = new Mecenas (pid, pnombreCompleto,ppais,pciudad,pfec_naci);
		}
		catch (Exception e) {
			throw new Exception ("Ocurrio un error a la hora de registrar.");
		}
		return pmecena;
	}
   /**
    * Actualizar el objeto mecena
    *
    * @param  pmecena  objeto mecena
    */
	public  void actualizar(Mecenas pmecena) throws 
			java.sql.SQLException,Exception{
		String sql;
		sql = "UPDATE TMecena "+
		"SET nombreCompleto='"+pmecena.getNombreCompleto()+"' "+
                ",pais='"+pmecena.getPais()+"' "+
                ",ciudad='"+pmecena.getCiudad()+"' "+
                ",fechaNacimiento='"+pmecena.getFechaNacimiento()+"' "+  
		"WHERE id="+pmecena.getId()+";";
		try {
			Conector.getConector().ejecutarSQL(sql);
		}
		catch (Exception e) {
			throw new Exception ("El mecena no ha sido registrado");
		}
	}
   /**
    * Borra el registro mecena
    *
    * @param  pmecena  objeto mecena
    */
	public  void borrar(Mecenas pmecena) throws 
			java.sql.SQLException,Exception{
		String sql;
		sql = "DELETE FROM TMecena "+
		"WHERE id="+pmecena.getId()+";";
		try {
			Conector.getConector().ejecutarSQL(sql);
		}
		catch (Exception e) {
			throw new Exception ("Ocurrio un error al eliminar el mecena.");
		}
	}
   /**
    * Busca las conicidencias de los 
    * registros de mecenas por nombre y/o id
    *
    * @param  id  id de mecena
    * @param  pnombre nombre del mecena
    * @return ArrayList<Mecenas>
    */     
        public ArrayList<Mecenas> buscarPorNombre(int id,String pnombre) throws Exception{
            Mecenas objMecena;
            ArrayList<Mecenas> listaMecenas;
            String sql;
            java.sql.ResultSet rs;
            sql = "SELECT id, nombreCompleto, pais, ciudad, fechaNacimiento" + 
                  " FROM TMecena ";
            if(id>0 && pnombre.length()>0){
                sql+=" Where id="+id+" and nombreCompleto like '%"+pnombre+"%'";
            }else if(id>0){
                sql+="  Where id="+id;
            }else if(pnombre.length()>0){
                sql+=" Where nombreCompleto like '%"+pnombre+"%'";
            }
            sql+=";";
            

            try{
                rs = Conector.getConector().ejecutarSQL(sql,true);
                listaMecenas = new ArrayList<>();
                if (rs.next()) {
                    do{
                        objMecena = new Mecenas (rs.getInt("id"), rs.getString("nombreCompleto"), rs.getString("pais"), rs.getString("ciudad"), rs.getString("fechaNacimiento"));
                        listaMecenas.add(objMecena);
                    }while (rs.next());
                }
            }catch (Exception e){
                throw new Exception ("No hay Mecenas con ese nombre.");
            }
            rs.close();
            
            return listaMecenas;
        }
        
   /**
    * Busca el mecena por id
    *
    * @param  id  id de mecena
    * @return Objeto mecena
    */      
        public Mecenas buscarPorId(int pid) throws Exception{
            Mecenas objMecena=null;
            String sql;
            java.sql.ResultSet rs;
            sql = "SELECT id, nombreCompleto, pais, ciudad, fechaNacimiento" + 
                  " FROM TMecena " + 
                  "WHERE id = "+pid+";";
            try{
                
                rs = Conector.getConector().ejecutarSQL(sql,true);
                if(rs.next()){
                    objMecena = new Mecenas (rs.getInt("id"), rs.getString("nombreCompleto"), rs.getString("pais"), rs.getString("ciudad"), rs.getString("fechaNacimiento"));
                }
            }catch (Exception e){ 
                throw new Exception ("No hay Mecenas con esa id.");
            }
            rs.close();
            
            return objMecena;
        }
        
}